package com.yonyougov.devops.cruxcisupport.roleapp;

import com.yonyougov.devops.cruxcisupport.roleapp.dto.AddMulRoleAppDto;
import com.yonyougov.devops.cruxcisupport.roleapp.vo.RoleAppPageByRoleIdDto;
import com.yonyougov.devops.cruxcisupport.roleapp.vo.RoleAppVo;
import com.yonyougov.devops.fwc.core.entity.Pagination;
import com.yonyougov.devops.fwc.core.service.BaseService;

import java.math.BigInteger;
import java.util.List;

/**
 * t_role_app服务
 */
public interface RoleAppService extends BaseService<RoleAppEntity, BigInteger> {
    //<!--用户自定义代码开始-->

    /**
     * 查询角色和应用的关联关系
     * 条件: 角色id, 应用名称
     *
     * @param roleAppPageByRoleIdDto [com.yonyougov.devops.cruxcisupport.roleapp.vo.RoleAppPageByRoleIdDto]
     * @return [com.yonyougov.devops.fwc.core.entity.Pagination]
     */
    Pagination<RoleAppVo> findRoleAppPageByRoleId(RoleAppPageByRoleIdDto roleAppPageByRoleIdDto);

    void addBatch(List<RoleAppEntity> params);

    /**
     * 根据主键删除关联关系(角色-应用)
     *
     * @param ids role_app表的主键集合
     */
    void deleteRoleAppByPrimaryKey(List<BigInteger> ids);

    /**
     * 查询当前用户下的应用
     * 条件: 权限过滤
     *
     * @return java.util.List
     * @throws Exception
     */
    List<BigInteger> getCurrentUserAppIds() throws Exception;

    /**
     * 角色关联应用
     * 参数: 角色id, 应用id集合
     *
     * @param addMulRoleAppDto [com.yonyougov.devops.cruxcisupport.roleapp.dto.AddMulRoleAppDto]
     */
    void addMulRoleApp(AddMulRoleAppDto addMulRoleAppDto);
    //<!--用户自定义代码结束-->
}
